package com.miracle.yuanshen;

import android.content.Context;
import android.content.SharedPreferences;
import com.mysql.cj.util.StringUtils;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class SharedPreferenceUtils {
    public static final String DB_GENERAL_FILE = "miracle";
    public static final String DB_NOTICE_ID = "notice_id";

    /**
     * 将字符串数据保存到本地
     * @param context 上下文
     * @param filename 生成XML的文件名
     * @param map map<生成XML中每条数据名,需要保存的数据>
     */
    public static void saveSettingNote(Context context, String filename , Map<String, String> map) {
        SharedPreferences.Editor note = context.getSharedPreferences(filename, Context.MODE_PRIVATE).edit();
        Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
            note.putString(entry.getKey(), entry.getValue());
        }
        note.commit();
    }

    /**
     * 从本地取出要保存的数据
     * @param context 上下文
     * @param filename 文件名
     * @param dataname 生成XML中每条数据名
     * @return 对应的数据(找不到为NUll)
     */
    public static String getSettingNote(Context context,String filename ,String dataname) {
        SharedPreferences read = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
        return read.getString(dataname, null);
    }


    /**
     * 获取下一个ID
     * @return
     */
    public static Integer getNextId(Context context, String key){
        Integer id = null;
        String idStr = SharedPreferenceUtils.getSettingNote(context, DB_GENERAL_FILE, key);
        if (StringUtils.isEmptyOrWhitespaceOnly(idStr)){
            id = -1;
        }else {
            id = Integer.parseInt(idStr);
        }
        id = id + 1;
        HashMap<String, String> data = new HashMap<>();
        data.put(key, id.toString());
        SharedPreferenceUtils.saveSettingNote(context, DB_GENERAL_FILE, data);
        return id;
    }

    public static Integer getNextNoticeId(Context context){
        return getNextId(context, DB_NOTICE_ID);
    }

    // 测试
    // public static void main(String[] args) {
    //     Map<String, String> map = new HashMap<String, String>(); //本地保存数据
    //     map.put("userid", "张三");
    //     map.put("userpwd", "123456");
    //     SharedPreferenceUtils.saveSettingNote(MyActivity.this, "userinfo", map);//参数（上下文，userinfo为文件名，需要保存的数据）
    //
    //     String userid= SharedPreferenceUtils.getSettingNote(MyActivity.this, "userinfo", "userid"));
    //     String userpwd= SharedPreferenceUtils.getSettingNote(MyActivity.this, "userinfo", "userpwd"));
    // }
}
